package com.hsoft.zhxy.common.result;

import com.alibaba.fastjson.JSONObject;

/**
 * @author mlingwei
 * @ClassName: ResultBody
 * @Description: 返回数据类型基类
 * 各方法返回数据实体的数据结构示例
 * {
 *     "code": 1,
 *     "message": "请求成功",// 也可不返回该字段
 *     "data": {
 *         "pageInfo": {
 *             "total": 100,// 一共有多少条数据
 *             "pageCount": 20 // 每页有多少条数据
 *         },
 *         "content": [{
 *             "bookId": "111111",
 *             "bookName": "java"
 *             },
 *             {
 *             "bookId": "222222",
 *             "bookName": "C"
 *             },
 *             ...
 *         ]
 *     }
 * }
 * @date 2016年1月27日 上午8:44:00
 */
public class ResultBody {

    /**
     * 封装返回值数据结构对象VO(带分页，返回JSONObject格式的String数据)
     *
     * @param <T>
     * @param total-分页-总数据条数
     * @param pageCount-分页-每页条数
     * @param content
     * @return JSONObject格式的数据
     */
    public static <T> JSONObject setData(Long total, T content) {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("code", ResultCodeInfoEnum.BIZ_SUCCESS.getResultCode());
        jsonObj.put("message", ResultCodeInfoEnum.BIZ_SUCCESS.getResultMsg());

        JSONObject pageInfo = new JSONObject();
        pageInfo.put("total", total);

        JSONObject tmp = new JSONObject();
        tmp.put("pageInfo", pageInfo);
        tmp.put("content", content);

        jsonObj.put("data", tmp);

        return jsonObj;
    }

    /**
     * 封装返回值数据结构对象VO(无分页，返回JSONObject格式的String数据)
     *
     * @param <T>
     * @param content
     * @return JSONObject格式的数据
     */
    public static <T> JSONObject setData(ResultCodeInfoEnum resultCodeInfoEnum, T content) {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("code", resultCodeInfoEnum.getResultCode());
        jsonObj.put("message", resultCodeInfoEnum.getResultMsg());

        JSONObject tmp = new JSONObject();
        tmp.put("content", content);

        jsonObj.put("data", tmp);

        return jsonObj;
    }

    /**
     * 封装返回值数据结构对象VO(无分页，返回JSONObject格式的String数据) 默认为成功
     *
     * @param <T>
     * @param content
     * @return JSONObject格式的数据
     */
    public static <T> JSONObject setData(T content) {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("code", ResultCodeInfoEnum.BIZ_SUCCESS.getResultCode());
        jsonObj.put("message", ResultCodeInfoEnum.BIZ_SUCCESS.getResultCode());

        JSONObject tmp = new JSONObject();
        tmp.put("content", content);

        jsonObj.put("data", tmp);

        return jsonObj;
    }

}
